# 【例一】有一些函数的定义具有清晰简单的映射关系，例如上面的 func 函数，这时候可以用匿名函数的方法简洁地表示：
my_func = lambda x: x * 2
print(my_func(3))

multi_para_func = lambda a, b: a + b
print(multi_para_func(4, 5))

# 【例二】但上面的用法其实违背了“匿名”的含义，事实上它往往在无需多处调用的场合进行使用，例如上面列表推导式中的例子，用户不关心函数的名字，只关心这种映射的关系：
value = [my_func(x) for x in range(5)]
print(value)
# 改造为正式使用的匿名函数
value = [(lambda x: x * 2)(x) for x in range(5)]  # 注意函数用一个()包裹了起来
print(value)

# 【例三】对于上述的这种列表推导式的匿名函数映射， Python 中提供了 map 函数来完成，它返回的是一个 map 对象，需要通过 list 转为列表：
value = list(map(lambda x: x * 2, range(5)))
print(value)

# 【例四】对于多个输入值的函数映射，可以通过追加迭代对象实现：
value = list(map(lambda x, y: str(x) + '_' + y, range(5), 'qwert'))
print(value)
